import book.BookList;
import user.AdminUser;
import user.NormalUser;
import user.User;

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: ${USER}
 * Date: ${YEAR}-${MONTH}-${DAY}
 * Time: ${TIME}
 */

public class Main {
    public static User login() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入您的姓名：");
        String name = scanner.nextLine();

        System.out.println("请输入您的身份：1.管理员  2.普通用户");

        int choice = scanner.nextInt();
        //如果选择1 跳到管理员对象 如果选择2 跳到普通用户对象
        //这一步 直接把主方法与用户对象串联在一起
        if(choice == 1) {
            return new AdminUser(name);
            //走到这一步 就对AdminUser的成员变量进行初始化
        }else {
            return new NormalUser(name);
            //这个也是一样
        }
    }
    public static void main(String[] args) {
        //实例化一个书架对象：
        BookList bookList = new BookList();
        /**这一步也是十分的巧妙：
         * 1.利用传参 向上转型
         * 2.发生了动态绑定 假设选择1 就直接调用到AdminUser对象去，选择2也是一样的，直接调用到NormalUser
         */
        User user = login();

        while(true) {
            int choice = user.menu();
            //要根据这个返回值 确定调用哪个对象的哪个方法
            /**
             * 1.哪个对象
             * 已经做了：User user = login();
             * 2.哪个方法
             *  2.1确定当前对象 包含哪种方法？
             *  在调用子类对象的时候，构造方法会初始化好对应的操作对象
             *  2.2怎么具体调用
             */
            user.doIoperation(choice, bookList);
            /**1. 查找图书
             * 2.新增图书
             * 3.删除图书
             * 4.显示图书
             * 5.退出系统
             * 6.借阅图书
             * 7.归还图书
             */
        }
    }
}